package com.ry.day1129;

public class LC94 {

    static class Solution {
        /**
         * @param nums: a binary array
         * @return: the maximum length of a contiguous subarray
         */
        public int findMaxLength(int[] nums) {
            int n = nums.length;
            int[] sum = new int[n+1];
            for (int i = 0; i <n ; i++) {
                sum[i+1] = sum[i]+nums[i];
            }

            int ans = Integer.MIN_VALUE;

            for (int i = 0; i <n ; i++) {
                for (int j = i; j <=n ; j++) {
                    int diff = sum[j]-sum[i];
                    int size = j-i;
                    if(size%2==0 && diff == size/2) {
                        ans = Math.max(ans,j-i);
                    }
                }
            }

          //  System.out.println(ans);

            return ans;
        }
    }


    public static void main(String[] args) {
        Solution obj = new Solution();
        System.out.println(obj.findMaxLength(new int[]{0,1}));
        System.out.println(obj.findMaxLength(new int[]{0,1,0}));
    }

}


/*
LintCode-Logo
搜索题目、标签、题集
中文
您上个月的个人报告已生成，点击查看
avatar
994 · 连续数组
算法
中等
通过率
55%

题目
题解12
笔记
讨论65
排名
记录
描述
给一个二进制数组，找到 0 和 1 数量相等的子数组的最大长度

最短时间刷“透”算法面试：《66页算法宝典》.pdf

微信添加【jiuzhangfeifei】备注【66】领取


给出的二进制数组的长度不会超过 50,000。

样例
样例 1:

输入: [0,1]
输出: 2
解释: [0, 1] 是具有相等数量的 0 和 1 的最长子数组。
样例 2:

输入: [0,1,0]
输出: 2
解释: [0, 1] (或者 [1, 0]) 是具有相等数量 0 和 1 的最长子数组。
相关知识
学习《2024年8月北美大厂最新面试真题精讲》课程中的2.1Meta：最新面试精选001相关内容 ，了解更多相关知识！
标签
企业
Facebook
相关题目

911
最大子数组之和为k
中等
推荐课程

ACM金牌逐行带刷班
最适合懒人的刷题课--躺平看算法大神在线coding，讲解思路+现场debug，手撕面试高频题
12/47
已开启智能提示
发起考试
30 分 00 秒
123456789

控制台
        历史提交

 */
